package com.janetfilter.core.plugin;

import com.janetfilter.core.Environment;

import java.util.List;

/**
 * 插件入口接口
 * 每个插件都必须提供一个实现此接口的类作为插件的入口点
 * 框架通过这个接口与插件交互，获取插件信息和功能
 */
public interface PluginEntry {
    /**
     * 初始化插件
     * 框架在加载插件时会调用此方法进行初始化
     * 
     * @param environment 环境配置
     * @param config 插件配置
     */
    default void init(Environment environment, PluginConfig config) {
        // get plugin config
    }

    /**
     * 获取插件名称
     * 
     * @return 插件名称
     */
    String getName();

    /**
     * 获取插件作者
     * 
     * @return 插件作者
     */
    String getAuthor();

    /**
     * 获取插件版本
     * 
     * @return 插件版本
     */
    default String getVersion() {
        return "v1.0.0";
    }

    default String getDescription() {
        return "A ja-netfilter plugin.";
    }

    /**
     * 获取插件提供的所有转换器
     * 框架会注册这些转换器用于字节码转换
     * 
     * @return 转换器数组
     */
    List<MyTransformer> getTransformers();
}
